<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <p>ES6 提供了新的数据结构 Set。它类似于数组，但是成员的值都是唯一的，没有重复的值。</p>
    <script>
        // Set 首字母大写 构造函数
        let set1 = new Set();
        // 添加 会自动去重
        set1.add(1)
        set1.add(1)
        set1.add('a')
        set1.add('a')
        set1.add(true)
        set1.add([1,2,3,3,2,1])
        console.log(set1);
        let set2 = [...set1];
        console.log(set2);
        let arr1 = [1,6,2,7,32,4,3,'name',2,5];
        let set3 = new Set(arr1);
        let str1 = 'hello';
        let set4 = new Set(str1);
        console.log([...set4].join());
        // 删除,返回tf 表示是否删除成功
        console.log(set1.delete(true));
        // has 返回是否存在
        console.log(set1.has('abcd'));
        // 清空所有
        set1.clear();
        console.log(set1);
        // ==========================
        console.log(set3);
        // 遍历--在set结构中key和value的值一样
        console.log(set3.keys()); // 返回一个key的对象
        console.log(set3.values()); // value的对象
        console.log(set3.entries()); // 键值对
        for (const key of set3.keys()) {
            console.log(key);
        }
        for (const key of set3.values()) {
            console.log(key);
        }
        for (const key of set3.entries()) {
            console.log(key);
        }
        set3.forEach((item) => {
            // 使用回调函数遍历每个成员
            console.log(item);
        })
    </script>
</body>
</html>